package com.boulderai.mcp.llm;

import com.boulderai.mcp.model.llm.LlmRequest;
import com.boulderai.mcp.model.llm.LlmResponse;
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;

/**
 * 大模型客户端接口
 * 支持多种大模型API的统一接口
 */
public interface LlmClient {
    
    /**
     * 发送聊天完成请求
     * @param request 请求参数
     * @return 响应结果
     */
    Mono<LlmResponse> chatCompletion(LlmRequest request);
    
    /**
     * 发送流式聊天完成请求
     * @param request 请求参数
     * @return 流式响应结果
     */
    Flux<LlmResponse> chatCompletionStream(LlmRequest request);
    
    /**
     * 检查客户端是否可用
     * @return 是否可用
     */
    boolean isAvailable();
    
    /**
     * 获取支持的模型列表
     * @return 模型列表
     */
    Mono<String[]> getSupportedModels();
    
    /**
     * 获取客户端类型
     * @return 客户端类型（如：openai, claude, etc.）
     */
    String getClientType();
}